package br.com.skpharma.dao;

import java.util.ArrayList;

import br.com.skpharma.db.DB;
import br.com.skpharma.vo.CategoriaVO;
import br.com.skpharma.vo.ModeloVO;
import br.com.skpharma.vo.PrateleiraVO;
import br.com.skpharma.vo.TipoVO;





public class DAOPrateleira {
	private DB db = new DB("jdbc:postgresql://localhost:5432/skpharma","postgres","postgres");
	private PrateleiraVO prateleira;

	public DAOPrateleira(){
		prateleira = new PrateleiraVO();
	}
	
	public void setCliente(PrateleiraVO nPrateleiraVO){
		prateleira = nPrateleiraVO;
	}

	public PrateleiraVO getPrateleiraVO(){
		return(prateleira);
	}

	public void salvar(){

		if(db.connect()){	
			System.out.println("insert into prateleira (quantidade, conteudo, preco, cd_tipoprateleira, cd_modelo, cod_categoria) values ('"+ 
				 	prateleira.getQtde() +	 
					  "','"+prateleira.getConteudo() +
					  "','"+prateleira.getPreco() +
					  "','"+prateleira.getTipoVO().getCod() +
					  "','"+prateleira.getModeloVO().getCod() +
					  "','"+prateleira.getCategoriaVO().getCod() +
					  "')");
			db.update("insert into prateleira (quantidade, conteudo, preco, cd_tipoprateleira, cd_modelo, cod_categoria) values ('"+ 
				 	prateleira.getQtde() +	 
					  "','"+prateleira.getConteudo() +
					  "','"+prateleira.getPreco() +
					  "','"+prateleira.getTipoVO().getCod() +
					  "','"+prateleira.getModeloVO().getCod() +
					  "','"+prateleira.getCategoriaVO().getCod() +
					  "')");
			db.disconnect();
		}		
	}

	public void excluir(){
		if(db.connect()){
			db.update("delete from prateleira where cod_prateleira = " + prateleira.getCod() );			
			db.disconnect();
		}		
	}
	
	public void comprar(int qtd){

	//	prateleira.atualizaQtde(qtd);

		if(db.connect()){
			db.update("update prateleira set quantidade='"+ prateleira.getQtde()  +"'" +
					  "where cod_prateleira = " + prateleira.getCod());			
			db.disconnect();
		}		
	}
	
	public void editar(){		
		if(db.connect()){
	
			db.update("update prateleira set quantidade='"+ prateleira.getQtde() +"'," +
					"conteudo='"+ prateleira.getConteudo() +"'," +
					"cd_tipoprateleira='"+ prateleira.getTipoVO().getCod() +"'," +
					"cd_modelo='"+ prateleira.getModeloVO().getCod() +"'," +
					"preco='"+ prateleira.getPreco() +"'," +
					"cod_categoria='"+ prateleira.getCategoriaVO().getCod() +"'" +
					"where cod_prateleira= " + prateleira.getCod());			
			db.disconnect();
		}		
	}
	
	public ArrayList buscaTipo(int cod){
		ArrayList lista = new ArrayList();
		PrateleiraVO prateleiraVO;
		DAOModelo daoModelo;
		DAOTipo daoTipo;
		DAOCategoria daoCategoria;
		if(db.connect()){
			db.select("select prateleira.*  from prateleira inner join tipoprateleira on (prateleira.cd_tipoprateleira = tipoprateleira.cd_tipoprateleira) inner join modelo on (prateleira.cd_modelo = modelo.cd_modelo) inner join categoria on (prateleira.cod_categoria = categoria.cod_categoria) where tipoprateleira.cd_tipoprateleira =" + cod);
			while(db.moveNext()){
				daoModelo = new DAOModelo();
				daoModelo.obter(db.getInt("cd_modelo"));
				daoTipo = new DAOTipo();
				daoTipo.obter(db.getInt("cd_tipoprateleira"));
				daoCategoria = new DAOCategoria();
				daoCategoria.obter(db.getInt("cod_codcategoria"));
				prateleiraVO = new PrateleiraVO(db.getInt("cod_prateleira"),db.getString("conteudo"), db.getInt("quantidade"), db.getFloat("preco"), new CategoriaVO(daoCategoria.getCategoriaVO().getCod(),daoCategoria.getCategoriaVO().getDs()), new TipoVO(daoTipo.getTipoVO().getCod(), daoTipo.getTipoVO().getDs()), new ModeloVO(daoModelo.getModeloVO().getCod(),daoModelo.getModeloVO().getDs(),daoModelo.getModeloVO().getMarcaVO()));
				lista.add(prateleiraVO);
			}
			db.disconnect();
		}		
		return lista;
	}
	

	public ArrayList buscaMarca(int cod){
		ArrayList lista = new ArrayList();
		PrateleiraVO prateleiraVO;
		DAOModelo daoModelo;
		DAOTipo daoTipo;
		DAOCategoria daoCategoria;
		if(db.connect()){
			db.select("select prateleira.*  from prateleira inner join tipoprateleira on (prateleira.cd_tipoprateleira = tipoprateleira.cd_tipoprateleira) inner join modelo on (prateleira.cd_modelo = modelo.cd_modelo) inner join categoria on (prateleira.cod_categoria = categoria.cod_categoria) where modelo.cd_modelo =" + cod);
			while(db.moveNext()){
				daoModelo = new DAOModelo();
				daoModelo.obter(db.getInt("cd_modelo"));
				daoTipo = new DAOTipo();
				daoTipo.obter(db.getInt("cd_tipoprateleira"));
				daoCategoria = new DAOCategoria();
				daoCategoria.obter(db.getInt("cod_codcategoria"));
				prateleiraVO = new PrateleiraVO(db.getInt("cod_prateleira"),db.getString("conteudo"), db.getInt("quantidade"), db.getFloat("preco"), new CategoriaVO(daoCategoria.getCategoriaVO().getCod(),daoCategoria.getCategoriaVO().getDs()), new TipoVO(daoTipo.getTipoVO().getCod(), daoTipo.getTipoVO().getDs()), new ModeloVO(daoModelo.getModeloVO().getCod(),daoModelo.getModeloVO().getDs(),daoModelo.getModeloVO().getMarcaVO()));
				lista.add(prateleiraVO);
			}
			db.disconnect();
		}		
		return lista;
	}
	
	
	public ArrayList buscaModelo(String nome){
		ArrayList lista = new ArrayList();
		PrateleiraVO prateleiraVO;
		DAOModelo daoModelo;
		DAOTipo daoTipo;
		DAOCategoria daoCategoria;
		if(db.connect()){
			db.select("select prateleira.*  from prateleira inner join tipoprateleira on (prateleira.cd_tipoprateleira = tipoprateleira.cd_tipoprateleira) inner join modelo on (prateleira.cd_modelo = modelo.cd_modelo) inner join categoria on (prateleira.cod_categoria = categoria.cod_categoria) where modelo.ds_modelo =" + "'" + nome + "'");
			while(db.moveNext()){
				daoModelo = new DAOModelo();
				daoModelo.obter(db.getInt("cd_modelo"));
				daoTipo = new DAOTipo();
				daoTipo.obter(db.getInt("cd_tipoprateleira"));
				daoCategoria = new DAOCategoria();
				daoCategoria.obter(db.getInt("cod_codcategoria"));
				prateleiraVO = new PrateleiraVO(db.getInt("cod_prateleira"),db.getString("conteudo"), db.getInt("quantidade"), db.getFloat("preco"), new CategoriaVO(daoCategoria.getCategoriaVO().getCod(),daoCategoria.getCategoriaVO().getDs()), new TipoVO(daoTipo.getTipoVO().getCod(), daoTipo.getTipoVO().getDs()), new ModeloVO(daoModelo.getModeloVO().getCod(),daoModelo.getModeloVO().getDs(),daoModelo.getModeloVO().getMarcaVO()));
				lista.add(prateleiraVO);
			}
			db.disconnect();
		}		
		return lista;
	}
	
	
	
	public ArrayList obterLista(){
		ArrayList lista = new ArrayList();
		PrateleiraVO prateleiraVO;
		DAOModelo daoModelo;
		DAOTipo daoTipo;
		DAOCategoria daoCategoria;
		if(db.connect()){
			db.select("select prateleira.*  from prateleira inner join tipoprateleira on (prateleira.cd_tipoprateleira = tipoprateleira.cd_tipoprateleira) inner join modelo on (prateleira.cd_modelo = modelo.cd_modelo) inner join categoria on (prateleira.cod_categoria = categoria.cod_categoria) order by modelo.ds_modelo");
			while(db.moveNext()){
				daoModelo = new DAOModelo();
				daoModelo.obter(db.getInt("cd_modelo"));
				daoTipo = new DAOTipo();
				daoTipo.obter(db.getInt("cd_tipoprateleira"));
				daoCategoria = new DAOCategoria();
				daoCategoria.obter(db.getInt("cod_codcategoria"));
				prateleiraVO = new PrateleiraVO(db.getInt("cod_prateleira"),db.getString("conteudo"), db.getInt("quantidade"), db.getFloat("preco"), new CategoriaVO(daoCategoria.getCategoriaVO().getCod(),daoCategoria.getCategoriaVO().getDs()), new TipoVO(daoTipo.getTipoVO().getCod(), daoTipo.getTipoVO().getDs()), new ModeloVO(daoModelo.getModeloVO().getCod(),daoModelo.getModeloVO().getDs(),daoModelo.getModeloVO().getMarcaVO()));
				lista.add(prateleiraVO);
			}
			db.disconnect();
		}		
		return lista;
	}	
	

	public void obter(int codigo){		
		if(db.connect()){
			db.select("select prateleira.*  from prateleira inner join tipoprateleira on (prateleira.cd_tipoprateleira = tipoprateleira.cd_tipoprateleira) inner join modelo on (prateleira.cd_modelo = modelo.cd_modelo) inner join categoria on (prateleira.cod_categoria = categoria.cod_categoria) where prateleira.cod_prateleira = " + codigo);
			if(db.moveNext()){				
				prateleira.setCod(db.getInt("cod_prateleira"));
				prateleira.setConteudo(db.getString("conteudo"));
				prateleira.setQtde(db.getInt("quantidade"));
				prateleira.setPreco(db.getFloat("preco"));
				
				DAOModelo daoModelo = new DAOModelo();
				daoModelo.obter(db.getInt("cd_modelo"));
				prateleira.setModeloVO(daoModelo.getModeloVO());
				
				DAOTipo daoTipo = new DAOTipo();
				daoTipo.obter(db.getInt("cd_tipoprateleira"));
				prateleira.setTipoVO(daoTipo.getTipoVO());
				
				DAOCategoria daoCategoria = new DAOCategoria();
				daoCategoria.carregar(db.getInt("cod_categoria"));
				prateleira.setCategoriaVO(daoCategoria.getCategoriaVO());
						
			}
			
			db.disconnect();
		}		
	}
}

